package GestionDatosFM;

import ExcepcionesFM.ExcepcionConsultaSinResultados;
import LogicaFM.EquipoFantasia;
import LogicaFM.Formacion;
import LogicaFM.Usuario;

public class EquipoFantasiaDAO {

	public static EquipoFantasia[] selecEquipos() {
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT nombre_equipo "
					+ "FROM usuario "
					+ "WHERE tipo_user = 'Participante'"
					+ " AND nombre_equipo is not null ");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		EquipoFantasia[] r = new EquipoFantasia[tmp.length];
		for(int i=0;i<tmp.length;i++){
			r[i] = new EquipoFantasia((String)tmp[i][0]);
		}
		return r;
	}

	public static boolean existeNombre(String nombreEquipo) {
		boolean existe = false;
		int i=0;
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT nombre_equipo "
														+ "FROM usuario "
														+ "WHERE tipo_user = 'Participante' ");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		while(existe==false && i<tmp.length){
			if(tmp[i][0]==nombreEquipo){
				existe=true;
			}
			i++;
		}
		return existe;
	}

	public static boolean esDePrimera(String nombreEquipo) {		
		boolean existe = false;
		int i=0;
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT nombre "
													+ "FROM equipo_primera ");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		while(existe==false && i<tmp.length){
			if(tmp[i][0].equals((String)nombreEquipo)){
				existe=true;
			}
			i++;
		}
		return existe;
	}

	public static void insertEquipo(Usuario usuarioActual) {
		// TODO Auto-generated method stub
		EjecutableBD.ejecutarUpdate("UPDATE usuario SET nombre_equipo = '"+usuarioActual.getEquipo().getNombre()
									+"' WHERE tipo_doc = '"+usuarioActual.getTipoDoc()
									+"' AND nro_doc = '"+usuarioActual.getNroDoc()+"'");
		
		Object[][] tmp = null;
		try {
			tmp = EjecutableBD.ejecutarSQL("SELECT max(id_formacion) "
												+ " FROM formacion");
		} catch (ExcepcionConsultaSinResultados e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		int id_form = ((int) tmp[0][0])+1;
		Formacion f = usuarioActual.getEquipo().getFormacion(GestorFecha.getFechaActual());
		
		EjecutableBD.ejecutarUpdate("INSERT INTO formacion "
								+ "VALUES ("+id_form+",-1,3,"+GestorFecha.getFechaActual().getNumeroFecha()+",'"+usuarioActual.getTipoDoc()+"','"+usuarioActual.getNroDoc()+"')");
		
		for(int i=0;i<f.getTitulares().size();i++){
			EjecutableBD.ejecutarUpdate("INSERT INTO tiene "
					   					+"VALUES ("+id_form+","+f.getTitulares().get(i).getIDJugador()+",TRUE)");
		}
		for(int i=0;i<f.getSuplentes().size();i++){
			EjecutableBD.ejecutarUpdate("INSERT INTO tiene "
					   					+"VALUES ("+id_form+","+f.getSuplentes().get(i).getIDJugador()+",FALSE)");
		}
		return;
		
	}

}
